require([
    'jweixin',
    'vue',
    'vue-resource'
], function(wx, Vue, VueResource) {
    Vue.use(VueResource);

    // 定义任务列表组件
    Vue.component('tasklist', {
        template: '#tasklist-tpl',
        props: ['dataList', 'loading', 'nextPage'],
        methods: {
            loadMore: function() {
                this.$emit('load-more');
            },
            refresh: function() {
                this.$emit('refresh');
            },
            showview: function(task) {
                app.dialog.alert.msg = task.name;
                app.dialog.alert.show = true;
            }
        },
        filters: {
            // 任务类型转换（数据字典功能）
            transType: function(value) {
                return {
                    '1': '意向单-审批',
                    '2': '可行性-部门审批',
                    '3': '可行性-高层审批'
                }[value] || '未知';
            }
        }
    });

    var app = new Vue({
        el: '#app',
        data: {
            hasMore: true, // 显示“加载更多”按钮
            busy: true,
            page: 0, // current page
            tasks: [],
            dialog: {
                alert: {
                    msg: '显示信息',
                    show: false
                }
            },
            copyright: 'Copyright &copy; 2016-2017 宙能信息. All rights reserved.'
        },
        created: function() {
            var me = this;
            me.getSdkCfg(function(res) {
                me.initSdk(res.data.data);
            });
            me.queryTasks();
        },
        // computed: {},
        methods: {
            // 从服务端获取微信sdk配置信息
            getSdkCfg: function(success) {
                // this.$http['get/post/put/delete'](url, [data], [options])
                this.$http.get('data/wxconfig.json').then(success, function(e) {
                    console.log(e);
                }).catch(function(res) {
                    console.log(res);
                });
            },
            reload: function() {
                this.page = 0;
                this.tasks = [];
                this.queryTasks();
            },
            // 查询任务列表
            queryTasks: function() {
                var me = this,
                    params = {
                        currentPage: ++me.page,
                        pageSize: 3
                    };
                me.busy = true;
                me.$http.get('data/tasks.json', {
                    params: params
                }).then(function(res) {
                    // me.page = res.data.data.page;
                    me.tasks = me.tasks.concat(res.data.data.list || []);
                    // 判断最后一页
                    if (me.tasks.length == res.data.data.total) {
                        me.hasMore = false;
                    }
                }, function(e) {
                    console.log(e);
                }).finally(function() {
                    me.busy = false;
                });
            },
            // 初始化微信sdk
            initSdk: function(cfg) {
                wx.config({
                    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
                    appId: cfg.appId, // 必填，公众号的唯一标识
                    timestamp: cfg.timestamp, // 必填，生成签名的时间戳
                    nonceStr: cfg.nonceStr, // 必填，生成签名的随机串
                    signature: cfg.signature, // 必填，签名，见附录1
                    jsApiList: [ // 必填，需要使用的JS接口列表，所有JS接口列表见附录2
                        'openLocation', // 使用微信内置地图查看位置
                        'getLocation' // 获取地理位置
                    ]
                });
                wx.ready(function() {
                    // 调用微信接口
                    wx.getLocation({
                        type: 'wgs84', // 默认为wgs84的gps坐标，如果要返回直接给openLocation用的火星坐标，可传入'gcj02'
                        success: function(res) {
                            // res.latitude // 纬度，浮点数，范围为90 ~ -90
                            // res.longitude // 经度，浮点数，范围为180 ~ -180。
                            // res.speed // 速度，以米/每秒计
                            // res.accuracy // 位置精度
                            alert(JSON.stringify(res, null, 4));
                        },
                        cancel: function() {
                            alert('用户拒绝授权获取地理位置');
                        }
                    });
                });
                wx.error(function(res) {
                    alert(res.errMsg);
                });
            }
        }
    });
});